// 函数写法
//解析
import { ref } from "vue"
import { defineStore } from "pinia"
import { useRouter } from "vue-router"
export const useRouteStore = defineStore('index', () => {
    // 路由跳转
    const router = useRouter()
    // 打开的路由数组
    let routeArr = ref([{ url: '/index', name: '首页' }]);
    // 当前激活路由
    let routeUrl = ref('首页')
    // 当前侧边栏激活
    let sidRouteUrl = ref('index')

    // 缓存当前打开的路由
    function sessionStorageRouterArr() {
        sessionStorage.setItem('routeArr', JSON.stringify(routeArr.value))
        sessionStorage.setItem('routeUrl', routeUrl.value)
        sessionStorage.setItem('sidRouteUrl', sidRouteUrl.value)
    }
    // 读取当前打开的路由
    function getSessionStorageRouterArr() {
        const routeArrStr = sessionStorage.getItem('routeArr')
        const routeUrl2 = sessionStorage.getItem('routeUrl')
        const sidRouteUrl2 = sessionStorage.getItem('sidRouteUrl')
        if (routeUrl && sidRouteUrl && routeArrStr) {
            routeArr.value = JSON.parse(routeArrStr)
            routeUrl.value = routeUrl2
            sidRouteUrl.value = sidRouteUrl2
        }
    }
    getSessionStorageRouterArr()
    console.log(routeArr.value, routeUrl.value, sidRouteUrl.value);


    // 修改激活路径
    function updateUrl(name: string) {
        console.log("当前路径", name);
        routeUrl.value = name
        const urlObj = routeArr.value.find(item => item.name == name)
        sidRouteUrl.value = urlObj?.url.replace('/', '')
        router.push({ path: urlObj?.url })
        sessionStorageRouterArr()
    }
    // 修改激活侧边栏
    function updateSidUrl(key: string) {
        sidRouteUrl.value = key
        sessionStorageRouterArr()
    }
    // 增加路由
    function addRoute(url: string, name: string) {
        if (!routeArr.value.some(item => item.url == url)) {
            const obj = { url, name }
            routeArr.value.push(obj)
        }
        routeUrl.value = name
        sidRouteUrl.value = url.replace('/', '')
        sessionStorageRouterArr()
    }
    // 删除路由
    function delRoute(name: string) {
        routeArr.value.forEach((item, index) => {
            if (item.name == name) {
                routeArr.value.splice(index, 1)
                if (routeUrl.value == name) {
                    if (routeArr.value.length == 0) {
                        routeUrl.value = '首页'
                        sidRouteUrl.value = "index"
                        router.push({ path: item.url })
                    } else {
                        routeUrl.value = routeArr.value[index - 1].name
                        sidRouteUrl.value = routeArr.value[index - 1].url.replace('/', '')
                        router.push({ path: routeArr.value[index - 1].url })
                    }
                }
            }
        })
        sessionStorageRouterArr()
    }





    return {
        routeUrl, sidRouteUrl, routeArr, addRoute, delRoute, updateUrl, updateSidUrl
    }
})
